home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / intro.z / intro
Text File  |  1998-10-20  |  24KB  |  388 lines

  1.  
  2.  
  3.  
  4. iiiinnnnttttrrrroooo((((3333))))                                                              iiiinnnnttttrrrroooo((((3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      intro - introduction to functions and libraries
  10.  
  11. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  12.      This section describes functions found in various libraries, other than
  13.      those functions that directly invoke IRIX system primitives, which are
  14.      described in Section 2 of this volume.  Function declarations can be
  15.      obtained from the _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee files indicated on each page.  Certain major
  16.      collections are identified by a letter after the section number.
  17.  
  18.      In general, routines in these libraries are not MP or MT (multi-threaded)
  19.      safe, and therefore must be explictly protected by one of the
  20.      synchronization primitives in the users code.  Exceptions are noted in
  21.      the man pages.  See section 3333PPPP below.
  22.  
  23.      (3C)  These functions, together with those of Section 2 and those marked
  24.            (3S), constitute the standard C library, _llll_iiii_bbbb_cccc, which is
  25.            automatically linked by the C compilation system.  The standard C
  26.            library is implemented as a shared object, _llll_iiii_bbbb_cccc_...._ssss_oooo_...._1111.
  27.  
  28.      (3G)  These functions constitute the IRIS Graphics Library which are
  29.            documented in the _G_r_a_p_h_i_c_s _L_i_b_r_a_r_y _U_s_e_r'_s _G_u_i_d_e.  The ----llllggggllll and ----llllmmmm
  30.            flags should be specified to access the graphics library.
  31.            Declarations for these functions may be obtained from the include
  32.            file <_g_l._h>.  <_d_e_v_i_c_e._h> and <_g_e_t._h> define other constants used by
  33.            the Graphics Library.
  34.  
  35.      (3M)  These functions constitute the Math Library, _l_i_b_m.  Use the ----llllmmmm
  36.            option to _c_c(1) or _l_d(1) to have the link editor search this
  37.            library.  Declarations for these functions may be obtained from the
  38.            include file <_m_a_t_h._h>.
  39.  
  40.      (3S)  These functions constitute the ``standard I/O package'' (see
  41.            _s_t_d_i_o(3S)).  These functions are in the standard C library _l_i_b_c,
  42.            already mentioned.  Declarations for these functions may be
  43.            obtained from the include file <_s_t_d_i_o._h>.
  44.  
  45.      (3G)  These functions constitute the general-purpose library, _llll_iiii_bbbb_gggg_eeee_nnnn.
  46.            This library is implemented as a shared object and an archive, and
  47.            is not automatically linked by the C compilation system.  Specify
  48.            _----_llll_gggg_eeee_nnnn on the _cccc_cccc command line to link with this library.
  49.            Declarations for these functions may be obtained from the include
  50.            file <_l_i_b_g_e_n._h>.
  51.  
  52.      (3B)  IRIX supports many 4.3BSD system calls and library routines.  To
  53.            get the maximum Berkeley compatibility, use the following compile
  54.            line:
  55.  
  56.                 cc -D_BSD_COMPAT -o prog prog.c -lbsd
  57.  
  58.            ----DDDD____BBBBSSSSDDDD____SSSSIIIIGGGGNNNNAAAALLLLSSSS on the compile line specifically selects the
  59.            Berkeley signal routines and ----DDDD____BBBBSSSSDDDD____TTTTIIIIMMMMEEEE selects the Berkeley
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. iiiinnnnttttrrrroooo((((3333))))                                                              iiiinnnnttttrrrroooo((((3333))))
  71.  
  72.  
  73.  
  74.            time-of-day routines. Both are a subset of the compatibility
  75.            specified by ----DDDD____BBBBSSSSDDDD____CCCCOOOOMMMMPPPPAAAATTTT.
  76.            The following 4.3BSD standard C Library routines in _l_i_b_b_s_d have
  77.            different arguments or conflicting semantics with the routines in
  78.            IRIX _l_i_b_c having the same names:  _d_u_p_2, _g_e_t_g_r_o_u_p_s, _g_e_t_p_g_r_p,
  79.            _s_e_t_g_r_o_u_p_s, _s_e_t_p_g_r_p.  To compile and link a program that calls the
  80.            BSD version of any of these routines, use a command of the form:
  81.  
  82.                 cc  prog.c -lbsd
  83.  
  84.            See the "BSD Compatibility" section below for more details.
  85.  
  86.      (3N)  There are actually 3 types of networking in IRIX.
  87.  
  88.            1)  BSD sockets implemented in the kernel, along with SUN RPC and
  89.            NIS (YP).  The functions that implement these calls are in libc
  90.            [see (_3_C) section above].
  91.  
  92.            2)  SVR4-style STREAMS/TLI networking (not sockets), along with
  93.            SVR4-style RPC.  SVR4-style RPC doesn't work with sockets, only
  94.            with the TLI.  Also, SVR4-style networking does not support NIS
  95.            [see _i_n_t_r_o(3N)].  The functions that implement these calls are in
  96.            libnsl, and to use them, the code must be compiled with :
  97.  
  98.                 cc -D_SVR4_TIRPC  prog.c -lnsl
  99.  
  100.  
  101.            3)  SVR4 emulation of sockets.  This is an implementation of
  102.            sockets entirely in a library (libsocket) that sits on top of
  103.            libnsl.  There are no header file differences for libsocket.  The
  104.            MIPS ABI-compliant programs that use sockets must (in order to be
  105.            ABI-compliant) link with libsocket.  There is no NIS support for
  106.            programs linked with libsocket [see _i_n_t_r_o(3N)].  To compile such a
  107.            program, use:
  108.  
  109.                 cc prog.c -lsocket
  110.  
  111.  
  112.      (3Y) Remote Procedure Call (RPC) and NIS support routines.  These
  113.           functions are in the standard C library _l_i_b_c, already mentioned.
  114.  
  115.      (3R) Remote Procedure Call services built on top of the Sun RPC protocol.
  116.           To compile and link a program that calls any of these routines, use
  117.           a command of the form:
  118.  
  119.                cc prog.c -lrpcsvc
  120.  
  121.  
  122.      (3P) These functions constitute the parallel processing interfaces.  They
  123.           comprise standard C library thread safe functions and POSIX threads
  124.           interfaces.  IRIX supports two threading models:  _s_p_r_o_c(2), process
  125.           level threads (IRIX, proprietary) and _p_t_h_r_e_a_d_s(3P) (POSIX threads).
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. iiiinnnnttttrrrroooo((((3333))))                                                              iiiinnnnttttrrrroooo((((3333))))
  137.  
  138.  
  139.  
  140.           The models are quite different and cannot interact in the same
  141.           program; an sproc program cannot create pthreads and vice-versa.
  142.           Thread safe interfaces may be accessed by multiple threads or
  143.           processes simultaneously and are guaranteed to behave correctly.
  144.  
  145.           In the sproc model no locking or single threading is done until the
  146.           program makes the first call to _s_p_r_o_c().  The _u_s_c_o_n_f_i_g(3P) interface
  147.           can be used to alter the thread safe behavior of these routines.
  148.           Sproc programs wishing to do parallel processing should define the
  149.           feature test macros ____SSSSGGGGIIII____MMMMPPPP____SSSSOOOOUUUURRRRCCCCEEEE and ____SSSSGGGGIIII____RRRREEEEEEEENNNNTTTTRRRRAAAANNNNTTTT____FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS.
  150.  
  151.           ____SSSSGGGGIIII____MMMMPPPP____SSSSOOOOUUUURRRRCCCCEEEE changes the _e_r_r_n_o variable from a global to a per
  152.           thread private variable.  It also makes certain macros and function
  153.           prototypes visible.
  154.  
  155.           Pthread programs should enable the thread safe options including
  156.           reentrant functions and per thread _e_r_r_n_o by setting the POSIX
  157.           feature test macro, ____PPPPOOOOSSSSIIIIXXXX____CCCC____SSSSOOOOUUUURRRRCCCCEEEE to the value _1_9_9_5_0_6_L or greater;
  158.           the file <_p_t_h_r_e_a_d._h> enables these options automatically.
  159.  
  160.           The following calls have been single threaded so that multiple
  161.           shared processes accessing them simultaneously will function
  162.           correctly:  _g_e_t_c, _p_u_t_c, _f_g_e_t_c, _f_p_u_t_c, _u_n_g_e_t_c, _g_e_t_w, _p_u_t_w, _g_e_t_s,
  163.           _f_g_e_t_s, _p_u_t_s, _f_p_u_t_s, _f_o_p_e_n, _f_d_o_p_e_n, _f_r_e_o_p_e_n, _f_t_e_l_l, _r_e_w_i_n_d, _f_e_o_f,
  164.           _c_l_e_a_r_e_r_r, _f_e_r_r_o_r, _s_e_t_b_u_f, _s_e_t_l_i_n_e_b_u_f, _s_e_t_b_u_f_f_e_r, _s_e_t_v_b_u_f, _f_c_l_o_s_e,
  165.           _f_f_l_u_s_h, _f_r_e_a_d, _f_w_r_i_t_e, _f_s_e_e_k, _f_g_e_t_p_o_s, _f_s_e_t_p_o_s, _f_l_o_c_k_f_i_l_e,
  166.           _f_u_n_l_o_c_k_f_i_l_e, _t_e_m_p_n_a_m, _t_m_p_n_a_m, _t_m_p_f_i_l_e, _m_k_t_e_m_p, _m_k_s_t_e_m_p, _p_o_p_e_n,
  167.           _p_c_l_o_s_e, _a_t_e_x_i_t, _p_r_i_n_t_f, _f_p_r_i_n_t_f, _v_p_r_i_n_t_f, _v_f_p_r_i_n_t_f, _s_c_a_n_f, _f_s_c_a_n_f,
  168.           _o_p_e_n_d_i_r, _r_e_a_d_d_i_r, _s_c_a_n_d_i_r, _s_e_e_k_d_i_r, _c_l_o_s_e_d_i_r, _t_e_l_l_d_i_r, _d_u_p_2, _s_r_a_n_d,
  169.           _r_a_n_d, _a_d_d_s_e_v, _a_d_d_s_e_v_e_r_i_t_y, _f_m_t_m_s_g, _s_e_t_c_a_t, _g_e_t_t_x_t, _l_f_m_t, _l_o_c_a_l_e_c_o_n_v,
  170.           _n_l__l_a_n_g_i_n_f_o, _p_f_m_t, _s_e_t_l_a_b_e_l, _s_e_t_l_o_c_a_l_e, _s_t_r_f_t_i_m_e, _s_t_r_x_f_r_m, _s_t_r_c_o_l_l,
  171.           _v_l_f_m_t, _v_p_f_m_t _m_a_l_l_o_c, _f_r_e_e, _c_a_l_l_o_c, _r_e_a_l_l_o_c, _m_a_l_l_o_p_t, _m_e_m_a_l_i_g_n
  172.           _a_c_r_e_a_t_e, _a_m_a_l_l_o_c, _a_f_r_e_e, _a_c_a_l_l_o_c, _a_r_e_a_l_l_o_c, _a_m_a_l_l_o_p_t.
  173.  
  174.           ____SSSSGGGGIIII____RRRREEEEEEEENNNNTTTTRRRRAAAANNNNTTTT____FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS enables prototypes and definitions for
  175.           reentrant versions of functions that are not thread safe by
  176.           definition (usually due to returning pointers to static data).
  177.           These alternatives are named _f_u_n_c_r and are described on the same
  178.           manual page as the original, unsafe version.
  179.  
  180.           Functions that return pointers to static data are not reentrant.
  181.           When there is no alternative interface threads must provide their
  182.           own synchronization.  The following functions have non-obvious
  183.           side-effects with respect to reentrancy.  _ssss_eeee_tttt_llll_oooo_cccc_aaaa_llll_eeee modifies many
  184.           tables and static data.  In particular, any strings returned by
  185.           _ssss_tttt_rrrr_eeee_rrrr_rrrr_oooo_rrrr and _gggg_eeee_tttt_tttt_xxxx_tttt will no longer be valid.  _ssss_eeee_tttt_llll_oooo_cccc_aaaa_llll_eeee also can
  186.           affect other tables such as character class, collating sequence and
  187.           numeric separator, which many routines access.  To be safe, no
  188.           thread should be using any standard C library service when a change
  189.           to the locale must be made.
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. iiiinnnnttttrrrroooo((((3333))))                                                              iiiinnnnttttrrrroooo((((3333))))
  203.  
  204.  
  205.  
  206.      (3T) These primitives implement a general terminal interface that
  207.           provides control over asynchronous communications ports.  These are
  208.           all in the standard C library.
  209.  
  210.      (3W) These functions constitute the wide-character library _llll_iiii_bbbb_wwww.  The
  211.           functions are used to convert between multibyte and 32-bit wide
  212.           characters, respectively.  This library is implemented as a shared
  213.           object and an archive and is not automatically linked by the C
  214.           compilation system.  Specify _----_llll_wwww on the _cccc_cccc command line to link with
  215.           this library.  Declarations for these functions may be obtained from
  216.           the include file <_w_i_d_e_c._h>.
  217.  
  218.      (3X) Various specialized libraries.  The files in which these libraries
  219.           are found are given on the appropriate pages.
  220. BBBBSSSSDDDD CCCCOOOOMMMMPPPPAAAATTTTIIIIBBBBIIIILLLLIIIITTTTYYYY
  221.      As described in the discussion of Section 3B above,
  222.           cc -D_BSD_COMPAT -o prog prog.c -lbsd
  223.  
  224.      selects maximum compatibility with BSD.  The ----llllbbbbssssdddd directive specifies
  225.      that lllliiiibbbbbbbbssssdddd....aaaa be searched before lllliiiibbbbcccc....aaaa, which selects the BSD versions
  226.      of functions that reside in both libraries (duplicated because of
  227.      identical names yet differing semantics or arguments).  The routines that
  228.      fall into this category are listed in the (3B) section above.  The BSD
  229.      versions may also be selected on a case-by-case basis by prefixing the
  230.      function name with BBBBSSSSDDDD when calling it in the program (e.g. _B_S_D_s_e_t_p_g_r_p).
  231.      Specifying ----DDDD____BBBBSSSSDDDD____CCCCOOOOMMMMPPPPAAAATTTT or ----DDDD____BBBBSSSSDDDD____SSSSIIIIGGGGNNNNAAAALLLLSSSS on the compile line links with
  232.      the BSD versions of the signal routines (_k_i_l_l, _k_i_l_l_p_g, _s_i_g_b_l_o_c_k, _s_i_g_n_a_l,
  233.      _s_i_g_p_a_u_s_e, _s_i_g_s_e_t_m_a_s_k, and _s_i_g_v_e_c).  The program must include <_s_i_g_n_a_l._h>
  234.      or <_s_y_s/_s_i_g_n_a_l._h>.  Note that a "#define _BSD_COMPAT" or "#define
  235.      _BSD_SIGNALS" placed in the source program before the inclusion of the
  236.      signal header file has the same effect as specifying the corresponding ----DDDD
  237.      compile option.
  238.      Specifying ----DDDD____BBBBSSSSDDDD____CCCCOOOOMMMMPPPPAAAATTTT or ----DDDD____BBBBSSSSDDDD____TTTTIIIIMMMMEEEE on the compile line links with
  239.      the BSD versions of the _g_e_t_t_i_m_e_o_f_d_a_y and _g_e_t_t_i_m_e_o_f_d_a_y routines.  The
  240.      program must include <_s_y_s/_t_i_m_e._h>. The "#define _BSD_COMPAT" or "#define
  241.      _BSD_TIME" must be placed in the source program before the inclusion the
  242.      time header file if the ----DDDD compile option is not specified.
  243.      Defining ____BBBBSSSSDDDD____CCCCOOOOMMMMPPPPAAAATTTT gives the following additional BSD compatibility
  244.      features over and above that given by ____BBBBSSSSDDDD____SSSSIIIIGGGGNNNNAAAALLLLSSSSand ____BBBBSSSSDDDD____TTTTIIIIMMMMEEEE:  you get
  245.      the BSD version of _s_e_t_j_m_p(3) and including <_s_y_s/_t_y_p_e_s._h> will cause
  246.      several additional macros and typedefs to be defined (e.g. _m_a_j_o_r, _m_i_n_o_r,
  247.      _m_a_k_e_d_e_v for dealing with device numbers).  ____BBBBSSSSDDDD____CCCCOOOOMMMMPPPPAAAATTTT may affect more
  248.      things in future releases.
  249.      The System V and BSD versions of the directory routines (_o_p_e_n_d_i_r,
  250.      _s_e_e_k_d_i_r, etc.)  differ greatly; inclusion of <_d_i_r_e_n_t._h> at the top of the
  251.      your program selects the System V routines, <_s_y_s/_d_i_r._h> selects the BSD
  252.      set.  See also _d_i_r_e_c_t_o_r_y(3C) and _d_i_r_e_c_t_o_r_y__b_s_d(3B).
  253.  
  254.  
  255.                                                                         PPPPaaaaggggeeee 4444
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262. iiiinnnnttttrrrroooo((((3333))))                                                              iiiinnnnttttrrrroooo((((3333))))
  263.  
  264.  
  265.  
  266. DDDDEEEEFFFFIIIINNNNIIIITTTTIIIIOOOONNNNSSSS
  267.      A character [except a multibyte character; see _mmmm_bbbb_cccc_hhhh_aaaa_rrrr(3C)] is any bit
  268.      pattern able to fit into a byte on the machine.  The null character is a
  269.      character with value 0, conventionally represented in the C language as
  270.      _\\\\_0000.  A character array is a sequence of characters.  A null-terminated
  271.      character array (a _s_t_r_i_n_g) is a sequence of characters, the last of which
  272.      is the _n_u_l_l _c_h_a_r_a_c_t_e_r.  A _s_t_r_i_n_g is a designation for a _n_u_l_l-_t_e_r_m_i_n_a_t_e_d
  273.      _c_h_a_r_a_c_t_e_r _a_r_r_a_y.  The null string is a character array containing only
  274.      the terminating null character.  A NULL pointer is the value that is
  275.      obtained by casting _0000 into a pointer.  C guarantees that this value will
  276.      not match that of any legitimate pointer, so many functions that return
  277.      pointers return _NNNN_UUUU_LLLL_LLLL to indicate an error.  The macro _NNNN_UUUU_LLLL_LLLL is defined in
  278.      _ssss_tttt_dddd_iiii_oooo_...._hhhh.  Types of the form _ssss_iiii_zzzz_eeee______tttt are defined in the appropriate header
  279.      files.
  280. FFFFIIIILLLLEEEESSSS
  281.      _I_N_C_D_I_R                     usually _////_uuuu_ssss_rrrr_////_iiii_nnnn_cccc_llll_uuuu_dddd_eeee
  282.      _L_I_B_D_I_R                     usually _////_uuuu_ssss_rrrr_////_llll_iiii_bbbb
  283.      _L_I_B_D_I_R_////_llll_iiii_bbbb_bbbb_ssss_dddd_...._aaaa            BSD Compatibility library
  284.      _L_I_B_D_I_R_////_llll_iiii_bbbb_mmmm_...._aaaa              Math library
  285.      _L_I_B_D_I_R_////_llll_iiii_bbbb_nnnn_ssss_llll_...._ssss_oooo           Network Services library
  286.      _L_I_B_D_I_R_////_llll_iiii_bbbb_gggg_eeee_nnnn_...._{{{{_ssss_oooo_,,,,_aaaa_}}}}       Misc routines
  287.      _L_I_B_D_I_R_////_llll_iiii_bbbb_gggg_llll_...._ssss_oooo            GL library
  288.      _L_I_B_D_I_R_////_llll_iiii_bbbb_rrrr_pppp_cccc_ssss_vvvv_cccc_...._{{{{_ssss_oooo_,,,,_aaaa_}}}}    RPC services library
  289.      _L_I_B_D_I_R_////_llll_iiii_bbbb_ssss_oooo_cccc_kkkk_eeee_tttt_...._ssss_oooo        Sockets Interface library
  290.      _L_I_B_D_I_R_////_llll_iiii_bbbb_pppp_tttt_hhhh_rrrr_eeee_aaaa_dddd_...._ssss_oooo       POSIX thread library
  291.      _L_I_B_D_I_R_////_llll_iiii_bbbb_wwww_...._{{{{_ssss_oooo_,,,,_aaaa_}}}}         Wide character library
  292.      _////_uuuu_ssss_rrrr_////_llll_iiii_bbbb_////_llll_iiii_bbbb_cccc_...._ssss_oooo_...._1111         Runtime Linker/Standard C library
  293. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  294.      _aaaa_rrrr_((((_1111_))))_,,,, _cccc_cccc_((((_1111_))))_,,,, _llll_dddd_((((_1111_))))_,,,, _nnnn_mmmm_((((_1111_))))_,,,, _iiii_nnnn_tttt_rrrr_oooo_((((_2222_))))_,,,, _uuuu_ssss_iiii_nnnn_iiii_tttt_((((_3333_PPPP_))))_,,,, _pppp_tttt_hhhh_rrrr_eeee_aaaa_dddd_((((_3333_PPPP_))))_,,,,
  295.      _ffff_llll_oooo_cccc_kkkk_ffff_iiii_llll_eeee_((((_3333_SSSS_))))_,,,, _ssss_tttt_dddd_iiii_oooo_((((_3333_SSSS_))))
  296.      _G_r_a_p_h_i_c_s _L_i_b_r_a_r_y _U_s_e_r'_s _G_u_i_d_e
  297. NNNNOOOOTTTTEEEESSSS
  298.      None of the functions, external variables, or macros should be redefined
  299.      in the user's programs.  Any other name may be redefined without
  300.      affecting the behavior of other library functions, but such redefinition
  301.      may conflict with a declaration in an included header file.
  302.      The header files in _I_N_C_D_I_R provide function prototypes (function
  303.      declarations including the types of arguments) for most of the functions
  304.      listed in this manual.  Function prototypes allow the compiler to check
  305.      for correct usage of these functions in the user's program.  The _llll_iiii_nnnn_tttt
  306.      program checker may also be used and will report discrepancies even if
  307.      the header files are not included with _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee statements.  Definitions
  308.      for Sections 2, 3C, and 3S are checked automatically.  Other definitions
  309.      can be included by using the _----_llll option to _llll_iiii_nnnn_tttt.  (For example, _----_llll_mmmm
  310.      includes definitions for _llll_iiii_bbbb_mmmm.)  Use of _llll_iiii_nnnn_tttt is highly recommended.
  311.      Users should carefully note the difference between STREAMS and _s_t_r_e_a_m.
  312.      STREAMS is a set of kernel mechanisms that support the development of
  313.      network services and data communication drivers.  It is composed of
  314.      utility routines, kernel facilities, and a set of data structures.  A
  315.      _s_t_r_e_a_m is a file with its associated buffering.  It is declared to be a
  316.  
  317.  
  318.                                                                         PPPPaaaaggggeeee 5555
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325. iiiinnnnttttrrrroooo((((3333))))                                                              iiiinnnnttttrrrroooo((((3333))))
  326.  
  327.  
  328.  
  329.      pointer to a type _FFFF_IIII_LLLL_EEEE defined in _ssss_tttt_dddd_iiii_oooo_...._hhhh.
  330.      In detailed definitions of components, it is sometimes necessary to refer
  331.      to symbolic names that are implementation-specific, but which are not
  332.      necessarily expected to be accessible to an application program.  Many of
  333.      these symbolic names describe boundary conditions and system limits.
  334.      In this section, for readability, these implementation-specific values
  335.      are given symbolic names.  These names always appear enclosed in curly
  336.      brackets to distinguish them from symbolic names of other
  337.      implementation-specific constants that are accessible to application
  338.      programs by header files.  These names are not necessarily accessible to
  339.      an application program through a header file, although they may be
  340.      defined in the documentation for a particular system.
  341.      In general, a portable application program should not refer to these
  342.      symbolic names in its code.  For example, an application program would
  343.      not be expected to test the length of an argument list given to a routine
  344.      to determine if it was greater than {ARG_MAX}.
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.                                                                         PPPPaaaaggggeeee 6666
  382.  
  383.  
  384.  
  385.